-- ----------------------------------------------------------------------------------------------------------------------------------------------------------
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	nt!RtlAssert+0xea	C/C++/ASM
>	dnsfirewall!onDatagramDataClassify+0xdb3d [c:\vs12projects\publicdnswsa\dnsfirewall\dnsfirewall.c @ 13963]	C/C++/ASM
 	NETIO!ProcessCallout+0x226	C/C++/ASM
 	NETIO!ArbitrateAndEnforce+0x2c9	C/C++/ASM
 	NETIO!KfdClassify+0x831	C/C++/ASM
 	tcpip!WFPDatagramDataShimV4+0x44d	C/C++/ASM
 	tcpip!ProcessALEForTransportPacket+0x4a9dc	C/C++/ASM
 	tcpip!WfpProcessOutTransportStackIndication+0x398	C/C++/ASM
 	tcpip!IppInspectLocalDatagramsOut+0x68d	C/C++/ASM
 	tcpip!IppSendDatagramsCommon+0x3f8	C/C++/ASM
 	tcpip!UdpSendMessagesOnPathCreation+0x484	C/C++/ASM
 	tcpip!UdpSendMessages+0x24a	C/C++/ASM
 	tcpip!UdpTlProviderSendMessagesCalloutRoutine+0x15	C/C++/ASM
 	nt!KeExpandKernelStackAndCalloutInternal+0xf3	C/C++/ASM
 	tcpip!UdpTlProviderSendMessages+0x6c	C/C++/ASM
 	afd!AfdFastDatagramSend+0x536	C/C++/ASM
 	afd!AfdFastIoDeviceControl+0x1570	C/C++/ASM
 	nt!IopXxxControlFile+0x7c8	C/C++/ASM
 	nt!NtDeviceIoControlFile+0x56	C/C++/ASM
 	nt!KiSystemServiceCopyEnd+0x13	C/C++/ASM
 	ntdll!NtDeviceIoControlFile+0xa	C/C++/ASM
 	mswsock!WSPSendTo+0x229	C/C++/ASM
 	WS2_32!sendto+0xcb	C/C++/ASM
 	WS2InterceptDLL!CWS2InterceptAPP::mf_sendto+0xb0a [c:\vs12projects\publicdnswsa\ws2interceptdll\ws2interceptdll.cpp @ 2172]	C/C++/ASM
 	0x1	C/C++/ASM
 	0x00000088`e4a96a10	C/C++/ASM
 	0x00000088`f170f500	C/C++/ASM
 	0xcccccccc`cccccccc	C/C++/ASM
 	0x00000088`e4a96a50	C/C++/ASM
 	0xcccccccc`00000010	C/C++/ASM
 	0xcccccccc`cccccccc	C/C++/ASM
 	0xcccccccc`0000001c	C/C++/ASM
 	0xcccccccc`cccccccc	C/C++/ASM
 	0x00000088`e36c49b0	C/C++/ASM
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        WdfObjectReleaseLock(wdfDeviceObject);
        break;
    default:
        TraceEvents(
            TRACE_LEVEL_ERROR,
            TRACE_DNSFIREWALL,
            "%!FUNC! line:%!LINE! %!LEVEL! Invalid State Superintendent of State machine = %u",
            pFlowData->enContextState
            );
        push_css(pFlowData->arContextStateStack, pFlowData->enContextState);
        classifyOut->actionType = FWP_ACTION_BLOCK;
        classifyOut->rights &= ~FWPS_RIGHT_ACTION_WRITE;
        ASSERT(FALSE);
        WdfObjectReleaseLock(wdfDeviceObject);
        break;
    }
}
-- ==========================================================================================================================================================
+		inFixedValues	0xffffd001`421cbaf8 struct FWPS_INCOMING_VALUES0_ *	struct FWPS_INCOMING_VALUES0_ *
+		inMetaValues	0xffffd001`421cbb10 struct FWPS_INCOMING_METADATA_VALUES0_ *	struct FWPS_INCOMING_METADATA_VALUES0_ *
+		layerData	0xffffe001`902fd700	void *
+		classifyContext	0x00000000`00000000	void *
+		filter	0xffffe001`92bf0010 struct FWPS_FILTER1_ *	struct FWPS_FILTER1_ *
		flowContext	0n18446708896022715616	unsigned int64
+		classifyOut	0xffffd001`421cb558 struct FWPS_CLASSIFY_OUT0_ *	struct FWPS_CLASSIFY_OUT0_ *
		bEmpty	0x00 ''	unsigned char
		bInbound	0x00 ''	unsigned char
		bIPv6	0x00 ''	unsigned char
		bSignalWorkerThread	0x00 ''	unsigned char
		bTestIpV4	0x00 ''	unsigned char
		enPacketDirection	FWP_DIRECTION_OUTBOUND (0n0)	FWP_DIRECTION_
		enUdpCompartmentID	DEFAULT_COMPARTMENT_ID (0n1)	COMPARTMENT_ID
		hFlowHandle	0n866	unsigned int64
+		hInjectionHandle	0xffffe001`8f137580	void *
		nDataSize	0n36	unsigned int
		packetState	FWPS_PACKET_NOT_INJECTED (0n0)	FWPS_PACKET_INJECTION_STATE_
+		pAddressEnd	0x00000000`00000000	unsigned short *
+		pFlowContext	0x00000000`00000000 struct _FLOW_DATA *	struct _FLOW_DATA *
-		pFlowData	0xffffe001`8e78dce0 struct _FLOW_DATA *	struct _FLOW_DATA *
+		pThis	0xffffe001`8e78dce0 struct _FLOW_DATA *	struct _FLOW_DATA *
		nFileIndex	0n0	int
		nThreadIndex	0n0	int
+		listEntry	struct _LIST_ENTRY [ 0xfffff801`b428a230 - 0xfffff801`b428a230 ]	struct _LIST_ENTRY
+		threadListEntry	struct _LIST_ENTRY [ 0xfffff801`b428a220 - 0xfffff801`b428a220 ]	struct _LIST_ENTRY
+		wdfFlowFileObject	0x00001ffe`7140cfd8 struct WDFFILEOBJECT__ *	struct WDFFILEOBJECT__ *
+		wdfFlowQueue	0x00001ffe`6fc95758 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitFlowDoneQueue	0x00001ffe`6cb4ffd8 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitUdpQuery2Queue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitUdpSetFirewallFilterQueue	0x00001ffe`6cc98de8 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitDnsQueryQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfUdpQueryPermitQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfUdpQuery2PermitQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitTcpNewMessageQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfWaitTcpResponceQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfTcpQueryPermitQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfTcpQueryInjectQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfTcpResponcePermitQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
+		wdfTcpResponceInjectQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
		enIpProto	IPPROTO_UDP (0n17)	IPPROTO
		nRemoteAddressV4	0n3323685607	unsigned int
		nRemoteAddressV4N	0n3882490822	unsigned int
		usRemotePort	0n14924	unsigned short
		flowHandle	0n866	unsigned int64
+		hAleAuthRecvAcceptCompletionHandle	0x00000000`00000000	void *
+		hAleAuthRecvAcceptContext	0x00000000`00000000	void *
		enContextState	csUdpFlowBreak (0n21)	_context_state
-		arContextStateStack	_context_state [16]	_context_state [16]
		[0]	csUdpFlowBreak (0n21)	_context_state
		[1]	csUdpFlowBreak (0n21)	_context_state
		[2]	csUdpWaitResponce2Pended (0n33)	_context_state
		[3]	csUdpPermitQuery2Done (0n32)	_context_state
		[4]	csUdpWaitPermitQuery2 (0n31)	_context_state
		[5]	csUdpPermitQuery2Pended (0n30)	_context_state
		[6]	csUdpWaitApprovalQuery2 (0n27)	_context_state
		[7]	csUdpWaitReadQuery2 (0n26)	_context_state
		[8]	csUdpFlow1Done (0n24)	_context_state
		[9]	csUdpWaitResponce1 (0n23)	_context_state
		[10]	csUdpWaitResponce1Pended (0n22)	_context_state
		[11]	csUdpPermitQueryDone (0n20)	_context_state
		[12]	csUdpWaitPermitQuery (0n18)	_context_state
		[13]	csUdpPermitQueryPended (0n17)	_context_state
		[14]	csUdpWaitApprovalQuery (0n15)	_context_state
		[15]	csUdpWaitReadQuery (0n13)	_context_state
		enFlowDataOwner	foFlowedFileList (0n11)	_flow_data_owner
-		arFlowDataOwnerStack	_flow_data_owner [16]	_flow_data_owner [16]
		[0]	foFlowedFileList (0n11)	_flow_data_owner
		[1]	foUdpALEFlowEstablishList (0n10)	_flow_data_owner
		[2]	foUdpALEAcceptRecvList (0n7)	_flow_data_owner
		[3]	foAcceptableList (0n5)	_flow_data_owner
		[4]	foWaitForSetFilterFileList (0n4)	_flow_data_owner
		[5]	foWaitForQuery2FileList (0n3)	_flow_data_owner
		[6]	foWaitForDoneFileList (0n2)	_flow_data_owner
		[7]	foFreeFileList (0n1)	_flow_data_owner
		[8]	foNoOwner (0n0)	_flow_data_owner
		[9]	foNoOwner (0n0)	_flow_data_owner
		[10]	foNoOwner (0n0)	_flow_data_owner
		[11]	foNoOwner (0n0)	_flow_data_owner
		[12]	foNoOwner (0n0)	_flow_data_owner
		[13]	foNoOwner (0n0)	_flow_data_owner
		[14]	foNoOwner (0n0)	_flow_data_owner
		[15]	foNoOwner (0n0)	_flow_data_owner
+		stRemoteAddressV6	struct FWP_BYTE_ARRAY16_	struct FWP_BYTE_ARRAY16_
		enPacketDirection	FWP_DIRECTION_OUTBOUND (0n0)	FWP_DIRECTION_
+		pUdpQueryBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpQueryCloneBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpQuery2BufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpQuery2CloneBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pTcpQueryBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pTcpQueryInjectBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pTcpResponceBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pTcpResponceInjectBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpResponceBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpResponceCloneBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpResponce2BufferList	0xffffe001`931b2220 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pUdpResponce2CloneBufferList	0x00000000`00000000 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pTcpQueryMdl	0x00000000`00000000 struct _MDL *	struct _MDL *
+		pTcpResponceMdl	0x00000000`00000000 struct _MDL *	struct _MDL *
		ulUdpQueryIpHeaderSize	0n20	unsigned int
		ulUdpQuery2IpHeaderSize	0n20	unsigned int
		ulUdpQueryTransportHeaderSize	0n8	unsigned int
		ulUdpQuery2TransportHeaderSize	0n8	unsigned int
		ulUdpQueryBufferSize	0n61	unsigned int
		ulUdpQueryDataOffset	0n42	unsigned int
		ulUdpQueryPacketOffset	0n14	unsigned int
		ulUdpQueryDataLength	0n33	unsigned int
		ulUdpQuery2BufferSize	0n61	unsigned int
		ulUdpQuery2DataOffset	0n42	unsigned int
		ulUdpQuery2PacketOffset	0n14	unsigned int
		ulUdpQuery2DataLength	0n33	unsigned int
		ulUdpResponceBufferSize	0n8	unsigned int
		ulUdpResponceDataOffset	0n8	unsigned int
		ulUdpResponceIpHeaderSize	0n20	unsigned int
		ulUdpResponceTransportHeaderSize	0n8	unsigned int
		ulUdpResponce2BufferSize	0n36	unsigned int
		ulUdpResponce2DataOffset	0n8	unsigned int
		ulUdpResponce2IpHeaderSize	0n20	unsigned int
		ulUdpResponce2TransportHeaderSize	0n8	unsigned int
		ulUdpQueryCount	0n2	unsigned int
		enUdpQueryCompartmentID	DEFAULT_COMPARTMENT_ID (0n1)	COMPARTMENT_ID
		enUdpQuery2CompartmentID	DEFAULT_COMPARTMENT_ID (0n1)	COMPARTMENT_ID
		enUdpResponceCompartmentID	DEFAULT_COMPARTMENT_ID (0n1)	COMPARTMENT_ID
		enUdpResponce2CompartmentID	DEFAULT_COMPARTMENT_ID (0n1)	COMPARTMENT_ID
		interfaceIndex	0n25	unsigned long
		subInterfaceIndex	0n0	unsigned long
		hTcpQueryFlowID	0n0	unsigned int64
		hTcpResponceFlowID	0n0	unsigned int64
		hUdpResponceEndpointHandle	0n1060	unsigned int64
		hUdpInjectEndpointHandle	0n1060	unsigned int64
		hUdpResponce2EndpointHandle	0n1060	unsigned int64
		hUdpInject2EndpointHandle	0n1060	unsigned int64
		nTcpQueryLength	0n0	unsigned int64
		nTcpQueryInjectDataSize	0n0	unsigned int64
		nTcpResponceLength	0n0	unsigned int64
		nTcpResponceInjectDataSize	0n0	unsigned int64
		nUdpResponceDataLength	0n0	unsigned int64
		nUdpResponce2DataLength	0n28	unsigned int64
+		stUdpResponceSendParams	struct FWPS_TRANSPORT_SEND_PARAMS1_	struct FWPS_TRANSPORT_SEND_PARAMS1_
+		stUdpResponce2SendParams	struct FWPS_TRANSPORT_SEND_PARAMS1_	struct FWPS_TRANSPORT_SEND_PARAMS1_
		bIPv6	0x00 ''	unsigned char
		bQuery2Pended	0x00 ''	unsigned char
		bFilterGhangePended	0x00 ''	unsigned char
		bUdpFlow1Done	0x01 ''	unsigned char
		bUdpQuery1Discarded	0x00 ''	unsigned char
		bUdpQueryClassifyPended	0x01 ''	unsigned char
		bUdpResponceClassifyPended	0x00 ''	unsigned char
		bUdpQuery2Reestablish	0x00 ''	unsigned char
		bUdpNotifyQuery	0x00 ''	unsigned char
		bUdpNotInboundTransport	0x00 ''	unsigned char
+		pLastLE	0x00000000`00000000 struct _LIST_ENTRY *	struct _LIST_ENTRY *
+		pListEntry	0x00000000`00000000 struct _LIST_ENTRY *	struct _LIST_ENTRY *
+		pNetBuffer	0xffffe001`902fd860 struct _NET_BUFFER *	struct _NET_BUFFER *
+		pNetBufferList	0xffffe001`902fd700 struct _NET_BUFFER_LIST *	struct _NET_BUFFER_LIST *
+		pNextLE	0x00000000`00000000 struct _LIST_ENTRY *	struct _LIST_ENTRY *
+		pRemoteAddress	0x00000000`00000000 struct FWP_BYTE_ARRAY16_ *	struct FWP_BYTE_ARRAY16_ *
		status	0n0	long
+		stIp6Address	struct in6_addr	struct in6_addr
+		stIpAddress	struct in_addr	struct in_addr
+		stRemoteAddress	struct in6_addr	struct in6_addr
+		szIpAddress	wchar_t [128] ""	wchar_t [128]
		ulInboundCount	0n0	unsigned int
		ulIpHeaderSize	0n20	unsigned int
		ulRemoteAddress	0n3323685607	unsigned int
		ulRemoteAddressN	0n3882490822	unsigned int
		ulTransportHeaderSize	0n8	unsigned int
		ulUdpDataLength	0n0	unsigned int
		ulUdpDataOffset	0n72	unsigned int
		usRemotePort	0n14924	unsigned short
+		wdfDeviceObject	0x00001ffe`6d04f7b8 struct WDFDEVICE__ *	struct WDFDEVICE__ *
+		wdfFlowFileObject	0x00001ffe`7140cfd8 struct WDFFILEOBJECT__ *	struct WDFFILEOBJECT__ *
+		wdfInjectDataObject	0x00000000`00000000 struct WDFFILEOBJECT__ *	struct WDFFILEOBJECT__ *
+		wdfOutputMemory	0x00000000`00000000 struct WDFMEMORY__ *	struct WDFMEMORY__ *
+		wdfPendedRequest	0x00000000`00000000 struct WDFREQUEST__ *	struct WDFREQUEST__ *
+		wdfRequestQueue	0x00000000`00000000 struct WDFQUEUE__ *	struct WDFQUEUE__ *
-- ==========================================================================================================================================================
-- ----------------------------------------------------------------------------------------------------------------------------------------------------------
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ==========================================================================================================================================================
-- ==========================================================================================================================================================
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ----------------------------------------------------------------------------------------------------------------------------------------------------------
